<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<script>
    function Stack(){
        //属性
        this.items = [];

        // 栈中的相关操作
        //========1、将元素压入栈===========
        //    下面这种为对象添加“方法”的方法，不推荐
        //    这会为每个zhan实例添加方法，浪费内存，效率低
        //     this.push = function(element){
        //
        //     }
        //
        Stack.prototype.push = function (element){
            this.items.push(element);
        };

        //=======2、pop 移除栈顶的元素，同时返回被移除的元素
        Stack.prototype.pop = function (){
            return this.items.pop();
            //利用数组本身的方法
        };

        //    3、查看栈顶元素
        Stack.prototype.peek = function(){
            return this.items[this.items.length-1];
        }

        //    4、判断栈是否为空
        Stack.prototype.isEmpty  =function (){
            return this.items.length == 0;
        }

        //    5、读取栈中元素的个数
        Stack.prototype.size = function () {
            return this.items.length;
        }

        //    6、toString
        Stack.prototype.toString = function () {
            var resultString = "";
            for (var i = 0;i<this.items.length;i++){
                resultString += this.items[i] + "";
            }
            return resultString;
        }
    }

    // 将10进制转化为2进制
    function dec2bin(decNumber){
        var stack  = new Stack(),
            result = 0;
        if(decNumber == 0){return result;}
        while(decNumber){
            decNumber = Math.floor(decNumber / 2);
            stack.push(decNumber % 2);
        }

        while(!stack.isEmpty()){
            return stack.toString();
        }

    }

    console.log(dec2bin(100));
</script>

</body>
</html>